package com.sisgesbyte.services.sistema;

import java.util.LinkedList;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.inject.Inject;

import com.sisgesbyte.common.ConstantesInternasSistema;
import com.sisgesbyte.common.Validaciones;
import com.sisgesbyte.dao.beanDao.RestriccionDetRequest;
import com.sisgesbyte.dao.seguridad.MantenimientoRestriccionesDao;
import com.sisgesbyte.data.entity.comun.GenericEntity;
import com.sisgesbyte.data.entity.seguridad.RestriccionesListaEntity;
import com.sisgesbyte.services.commonBean.GenericResponse;
import com.sisgesbyte.services.sistema.bean.RestriccionesBean;
import com.sisgesbyte.services.sistema.bean.RestriccionesListaResponse;

@Stateless
public class MantenimientoRestriccionesImpl implements MantenimientoRestricciones {

	@EJB
	private MantenimientoRestriccionesDao mantenimientoRestriccionesDao;
	
	@Inject
	private Validaciones validaciones;
	
	@Override
	public RestriccionesListaResponse mostrarRestricciones(String codTransaccion) {
		String mensajeTransaccionMetodo = "[mostrarRestricciones idTx=" + codTransaccion + "] - ";
		RestriccionesListaResponse response = new RestriccionesListaResponse();
		
		try{
			response.setIdTransaccion(codTransaccion);
			List<RestriccionesListaEntity> daoRestricciones = null;
			try{
				daoRestricciones = mantenimientoRestriccionesDao.listarRestricciones();
				
			}catch(Exception e){
				System.out.println(mensajeTransaccionMetodo + "Hubo un error  en BD " + e);
				response.setCodigoRespuesta(ConstantesInternasSistema.LISTAR_RESTRICCIONES_COD_IDT58);
				response.setMensajeRespuesta(ConstantesInternasSistema.LISTAR_RESTRICCIONES_MSJ_IDT58);
				return response ;
			}
			
			if(daoRestricciones.size() > 0){
				
				List<RestriccionesBean> lista = new LinkedList<RestriccionesBean>();
				
				for(RestriccionesListaEntity row : daoRestricciones){
					RestriccionesBean bean = new RestriccionesBean();
					bean.setActive(row.getActive());
					bean.setEmpresaId(row.getEmpresa_id());
					bean.setId(row.getId());
					bean.setRazonSocial(validaciones.validarCamposString(row.getRazon_social()));
					bean.setRestriccion(validaciones.validarCamposString(row.getRestriccion()));
					lista.add(bean);
				}
				
				response.setListaRestricciones(lista);
				response.setCodigoRespuesta(ConstantesInternasSistema.CODIGO_EXITO);
				response.setMensajeRespuesta(ConstantesInternasSistema.MENSAJE_EXITO);
				
			}else{
				response.setCodigoRespuesta(ConstantesInternasSistema.LISTAR_RESTRICCIONES_COD_IDF57);
				response.setMensajeRespuesta(ConstantesInternasSistema.LISTAR_RESTRICCIONES_MSJ_IDF57);	
			}
			
		}catch(Exception e){
			System.out.println(mensajeTransaccionMetodo + "Hubo un error en el proceso " + e);
			response.setCodigoRespuesta(ConstantesInternasSistema.LISTAR_RESTRICCIONES_COD_IDT58);
			response.setMensajeRespuesta(ConstantesInternasSistema.LISTAR_RESTRICCIONES_MSJ_IDT58);
			return response;
		}
		
		return response;
	}

	@Override
	public GenericResponse nuevoRestricciones(String codTransaccion, RestriccionesBean restricciones) {
		String mensajeTransaccionMetodo = "[nuevoRestricciones idTx=" + codTransaccion + "] - ";
		GenericResponse response = new GenericResponse();
		try{
			response.setIdTransaccion(codTransaccion);
			GenericEntity daoRestriccion = null;
			
			RestriccionDetRequest newRestriccion = new RestriccionDetRequest();
			newRestriccion.setActive(restricciones.getActive());
			newRestriccion.setCodEmpresa(restricciones.getEmpresaId());
			newRestriccion.setRestriccion(validaciones.validarCamposString(restricciones.getRestriccion()));
			try{
				daoRestriccion = mantenimientoRestriccionesDao.guardarRestriccion(newRestriccion);
				
			}catch(Exception e){
				System.out.println(mensajeTransaccionMetodo + "Hubo un error al registrar  en BD " +e);
				response.setCodigoRespuesta(ConstantesInternasSistema.NUEVO_RESTRICCIONES_COD_IDT59);
				response.setCodigoRespuesta(ConstantesInternasSistema.NUEVO_RESTRICCIONES_MSJ_IDT59);
				return response ;
			}
			
			if(daoRestriccion.getCod_error() == Integer.valueOf(ConstantesInternasSistema.CODIGO_EXITO)){
				response.setCodigoRespuesta(ConstantesInternasSistema.CODIGO_EXITO);
				response.setCodigoRespuesta(ConstantesInternasSistema.MENSAJE_EXITO);
				
			}else{
				response.setCodigoRespuesta(ConstantesInternasSistema.NUEVO_RESTRICCIONES_COD_IDF58);
				response.setCodigoRespuesta(ConstantesInternasSistema.NUEVO_RESTRICCIONES_MSJ_IDF58);
			}
			
		}catch(Exception e){
			System.out.println(mensajeTransaccionMetodo + "Hubo un error en el proceso " +e);
			response.setCodigoRespuesta(ConstantesInternasSistema.NUEVO_RESTRICCIONES_COD_IDT59);
			response.setCodigoRespuesta(ConstantesInternasSistema.NUEVO_RESTRICCIONES_MSJ_IDT59);
			return response;
		}
		
		return response;
	}

	@Override
	public GenericResponse editRestricciones(String codTransaccion, RestriccionesBean restricciones) {
		String mensajeTransaccionMetodo = "[editRestricciones idTx=" + codTransaccion + "] - ";
		GenericResponse response = new GenericResponse();
		try{
			response.setIdTransaccion(codTransaccion);
			GenericEntity daoRestriccion = null;
			
			RestriccionDetRequest editRestriccion = new RestriccionDetRequest();
			editRestriccion.setActive(restricciones.getActive());
			editRestriccion.setCodEmpresa(restricciones.getEmpresaId());
			editRestriccion.setRestriccion(validaciones.validarCamposString(restricciones.getRestriccion()));
			editRestriccion.setId(restricciones.getId());
			try{
				daoRestriccion = mantenimientoRestriccionesDao.actualizarRestriccion(editRestriccion);
				
			}catch(Exception e){
				System.out.println(mensajeTransaccionMetodo + "Hubo un error al registrar  en BD " +e);
				response.setCodigoRespuesta(ConstantesInternasSistema.EDIT_RESTRICCIONES_COD_IDT60);
				response.setCodigoRespuesta(ConstantesInternasSistema.EDIT_RESTRICCIONES_MSJ_IDT60);
				return response ;
			}
			
			if(daoRestriccion.getCod_error() == Integer.valueOf(ConstantesInternasSistema.CODIGO_EXITO)){
				response.setCodigoRespuesta(ConstantesInternasSistema.CODIGO_EXITO);
				response.setCodigoRespuesta(ConstantesInternasSistema.MENSAJE_EXITO);
				
			}else{
				response.setCodigoRespuesta(ConstantesInternasSistema.EDIT_RESTRICCIONES_COD_IDF59);
				response.setCodigoRespuesta(ConstantesInternasSistema.EDIT_RESTRICCIONES_MSJ_IDF59);
			}
			
		}catch(Exception e){
			System.out.println(mensajeTransaccionMetodo + "Hubo un error en el proceso " +e);
			response.setCodigoRespuesta(ConstantesInternasSistema.EDIT_RESTRICCIONES_COD_IDT60);
			response.setCodigoRespuesta(ConstantesInternasSistema.EDIT_RESTRICCIONES_MSJ_IDT60);
			return response;
		}
		
		return response;
	}

	@Override
	public GenericResponse deleteRestricciones(String codTransaccion, int codRestricciones) {
		String mensajeTransaccionMetodo = "[deleteRestricciones idTx=" + codTransaccion + "] - ";
		GenericResponse response = new GenericResponse();
		try{
			GenericEntity daoRestriccion = mantenimientoRestriccionesDao.eliminarRestriccion(codRestricciones);
			
			if(daoRestriccion.getCod_error() == Integer.valueOf(ConstantesInternasSistema.CODIGO_EXITO)){
				response.setCodigoRespuesta(ConstantesInternasSistema.CODIGO_EXITO);
				response.setCodigoRespuesta(ConstantesInternasSistema.MENSAJE_EXITO);
			}else{
				response.setCodigoRespuesta(ConstantesInternasSistema.DELETE_RESTRICCIONES_COD_IDF60);
				response.setCodigoRespuesta(ConstantesInternasSistema.DELETE_RESTRICCIONES_MSJ_IDF60);
			}
			
		}catch(Exception e){
			System.out.println(mensajeTransaccionMetodo + "Hubo un error en el proceso " + e);
			response.setCodigoRespuesta(ConstantesInternasSistema.DELETE_RESTRICCIONES_COD_IDT61);
			response.setCodigoRespuesta(ConstantesInternasSistema.DELETE_RESTRICCIONES_MSJ_IDT61);
			return response;
		}
		
		return response;
	}


}
